NumPy 协方差cov与相关系数corrcoef的使用
协方差
如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值时另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,即其中一个变量大于自身的期望值时另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
可以通俗的理解为:两个变量在变化过程中是同方向变化?还是反方向变化?同向或反向程度如何? 你变大,同时我也变大,说明两个变量是同向变化的,这时协方差就是正的; 你变大,同时我变小,说明两个变量是反向变化的,这时协方差就是负的; 从数值来看,协方差的数值越大,两个变量同向程度也就越大。反之亦然。
import numpy as np
a = np.array([1,2,3])
b = np.array([4,3,4])
x = np.vstack((a,b))
>>> np.cov(a, b)
array([[ 1. , 0. ],
[ 0. , 0.33333333]])
>>> np.cov(a, b, bias=True)
array([[ 0.66666667, 0. ],
[ 0. , 0.22222222]])
>>> np.cov(x)
array([[ 1. , 0. ],
[ 0. , 0.33333333]])
bais
参数的意义,默认为False,那么计算均值的时候除以 n - 1,如果设为True,那么计算均值的时候除以n,其中n为随机变量的维度数
numpy 的 cov 函数使用的三点:
- 变量矩阵的一行表示一个随机变量;
- bais参数控制计算时除以n-1还是n, True表示除以n,False表示除以n-1;
- 输出结果是一个协方差矩阵, results[i][j]表示第i个随机变量与第j个随机变量的协方差.
相关系数
相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差,它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度。
需要注意的是, np.corrcoef()
接受的参数是一个矩阵,返回的结果也是一个矩阵
import numpy as np
a = np.array([1,2,3])
b = np.array([2,5,8])
x = np.vstack((a,b))
np.corrcoef(a, b)
np.corrcoef(x)
>>> np.corrcoef(a, b)
array([[ 1., 1.],
[ 1., 1.]])
>>> np.corrcoef(x)
array([[ 1., 1.],
[ 1., 1.]])
numpy 中函数 corrcoef
的用法与函数 cov
的用法相似,只是corrcoef中bais参数不起作用。
numpy的corrcoef
函数使用的两点:
- 变量矩阵的一行表示一个随机变量;
- 输出结果是一个相关系数矩阵, results[i][j]表示第i个随机变量与第j个随机变量的相关系数.
参考